// ------------------------------------
// 用户单选控件
// 
//-------------------------------------

$(document).ready(function () {
    $("body").append("<div id='UserSelect_Panel' style='position:absolute; z-index:10001;'></div>");
    //点击其它地方时候，隐藏选择框
    $(document).click(function (event) {
        var element = event.target;
        var emeCls = $(element).attr("bj");
        if (emeCls != "cBj") {
            $("#UserSelect_Panel").css("display", "none");
        }
    });
    //初始化控件
    var controls = $(this).find('input');
    controls.each(function () {
        if ($(this).attr("ctrlType") == "SingleUser") {
            $(this).UserSelectCtrl(
              {
                  RootID: ''
              });
        }
    });
  });

  //初始化数据
  var _Users=[];
  function InitData() {
     
  }

// ----------------------------------------
// 部门选择器
// ----------------------------------------
(function ($) {
    $.fn.UserSelectCtrl = function (options) {
        var defaults = {
            CtrolID: $(this).attr("id"),
            //evt: "click",
            divItemSelect: 'div_item_select',
            showDataDivId: "UserSelect_Panel",
            inputDataTextId: "input_text"
        };
        if (options) {
            $.extend(defaults, options);
        }
        //初始化控件
        //添加对应样式
        $(this).wrap("<div id=\"User_"+defaults.CtrolID+"\" class=\"userctrl\" style=\"width:"+(this.width()+4)+"px\"></div>");
        $(this).width( this.width()-17-17);
        $(this).after('<input type="button" class="button" id="btn_'+defaults.CtrolID+'"/>');
        $("#btn_"+defaults.CtrolID).click(function(event){
         fn($("#"+defaults.CtrolID).val(),event);
        })

        var obj = defaults.CtrolID;

        //在页面上显示用户选择界面
        function showPanel() {
            var tLeft = $("#"+obj).offset().left;
            var tTop = $("#"+obj).offset().top + 20;
            $("#UserSelect_Panel").css({ display: "block", left: tLeft, top: tTop });
        }


        //获取设置的值
        function getValue()
        {
            return $(this).attr("SValue");
        }

        //获取对应的文本值
        function getText()
        {
            return $(this).val();
        }

        //获取当前的用户对象
        function getObject()
        {
            return seekByID(getValue())[0];
        }
        //设置选择的值
        function setValue(value) {
            $(this).attr("SValue",value);
        }
        
        //绑定单击事件
        $(this).click(function(event){
            fn(this.value,event);
         });


        //绑定键盘事件
        $(this).keyup(function (event) {
            fn(this.value,event);
        });

        //响应事件方法
        function fn(v,event)
        {
            if (event.keyCode == 40) {//down
                chageSelect(1);
            }
            else if (event.keyCode == 38) {//up
                chageSelect(-1);
            }
            else if (event.keyCode == 13) {//回车
                item_click($("#" + defaults.showDataDivId + " div[class='" + defaults.divItemSelect + "']"));
            }
            else if (v.length >=0) {
                var str = "";
                var result = seek(v);
                $.each(result, function (i) { //alert(e.Caption);
                    //此处拼接服务器返回的数据。。。。
                    str += "<div id=\"row"+i+"\">" + result[i].Caption + "</div>" + //展示的数据
                            "<input type='hidden' name='d_index' value='" +
                            i +
                            "' />" //位置，勿动
                });
                //..ajax请求， 返回的时候 调用。。
                //以下为 Ajax 返回的时候 调用的数据
                 $("#UserSelect_Panel").html(str).slideDown(200);
                //注册事件
                registerInputEvent();
                setTimeout(showPanel,0);
            }
            else {
                $("#UserSelect_Panel").slideUp(200);
            }
        }

        //.blur(function(){$("#" + showDataDivId).slideUp(200);});
        /**
        * 键盘操作  向上 或向上 
        * @param {Object} opt   向上 -1  向下 1 
        */
        function chageSelect(opt) {
            var DataDivID="#"+defaults.showDataDivId;
            if ($(DataDivID).css('display') == 'block') {
                var obj = $(DataDivID+" div[class='" + defaults.divItemSelect + "']");
                if (obj.html() == null) {//当前还未选中。
                    if (opt == 1) {
                        $("#" + defaults.showDataDivId + " div:first").addClass(defaults.divItemSelect);
                    }
                    else {
                        $("#" + defaults.showDataDivId + " div:last").addClass(defaults.divItemSelect);
                    }
                }
                else {
                    var curr = parseInt($("#" + defaults.showDataDivId + " div[class='" + defaults.divItemSelect + "'] ~ input[name='d_index']").val()) + opt;
                    var divCount = $("#" + defaults.showDataDivId + " div").size();
                    $("#" + defaults.showDataDivId + " div[class='" + defaults.divItemSelect + "']").removeClass(defaults.divItemSelect);
                    $("#" + defaults.showDataDivId + " div:eq(" + ((curr < 0) ? (divCount - 1) : ((curr == divCount) ? 0 : curr) + ")")).addClass(defaults.divItemSelect);
                }
            }
        }

        /**
        * 注册事件
        */
        function registerInputEvent() {
            $("#" + defaults.showDataDivId + " div").click(function () {
                item_click($(this));
            }).mouseover(function () {
                $("#" + defaults.showDataDivId + " div[class='" + defaults.divItemSelect + "']").removeClass(defaults.divItemSelect);
                $(this).addClass(defaults.divItemSelect);
            }).mouseout(function () {
                $(this).removeClass(defaults.divItemSelect);
            });
        }

        /**
        * 点击每一项的操作
        * @param {Object} obj
        */
        function item_click(obj) {
            //
            //debugger
            if (obj.html() == null) {//如果是按回车键。。。
                
                //暂时不做操作。。。。
            }
            else { //如果是点击 选择
                $("#"+defaults.CtrolID).val($(obj).html()).focus();
                //取得 你要放置的数据  d_value   为 变量名。。。
                //var currValue = $("#" + showDataDivId + " div[class='" + divItemSelect + "'] ~ input[name='d_value']").val();
            }
            $("#" + defaults.showDataDivId).hide();
            //跳转。。。。。等 操作。
        }

        //查询
        function seek(key) {
            //debugger
            //var key = $("#input_div").val();
            //debugger
            var _a = [];
            var result = $.grep(OrgPostEmpData.rows, function (e, n) {
                if (e.Caption.indexOf(key) >= 0 && e.flag == '3e') { _a.push(e); }
            });
            return _a;
        }

        //通过ID查询
        function seekByID(id)
        {
            var _a = [];
            var result = $.grep(OrgPostEmpData.rows, function (e, n) {
                if (e.id.indexOf(id) >= 0 && e.flag == '3e') { _a.push(e); 
                return _a;}
            });
            return _a;
        }
    }
})(jQuery);






